package com.Blog.www.service;

import com.Blog.www.po.BlogImg;
import com.Blog.www.po.PageBean;
import com.Blog.www.po.UserBlog;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.Part;
import java.util.List;

/**
 * 博客操作类
 *
 * @author 君未洋
 */
public interface BlogService {


    /**
     * 添加博客图片用方法
     *
     * @param part 获取到的文件
     * @param bid  要添加图片的博客的id
     * @return 返回操作的成功与否
     */
    Boolean addImg(Part part, String bid);


    /**
     * 获取对应状态的博客分页类
     *
     * @param columnId    专栏对应id
     * @param currentPage 当前页数
     * @param rows        每页展示的条数
     * @param status      状态
     * @return 返回分页封装类
     */
    PageBean<UserBlog> findBlogByPage(String columnId, String currentPage, String rows, String status);


    /**
     * 用户文章添加方法
     *
     * @param blog        要添加的博客
     * @param addColumn   要添加的自定义专栏
     * @param addColumnId 要添加的已有专栏id
     * @param prior       要添加的自定义专栏的前驱
     * @param req         必要参数
     * @return 返回操作的成功与否
     */
    HttpServletRequest addBlog(UserBlog blog, String addColumn, String addColumnId, String prior, HttpServletRequest req);

    /**
     * 查询个人博客用
     *
     * @param currentPage 当前页数
     * @param rows        每页展示的条数
     * @param id          用户id
     * @param labelPrior  用户分类标签的设置
     * @return 返回文章封装类
     */
    PageBean<UserBlog> findUserBlog(String currentPage, String rows, Integer id, String labelPrior);

    /**
     * 用户博客查询方法
     *
     * @param id  博客id
     * @param uid 用户id
     * @return 返回查询到的博客
     */
    UserBlog getUserBlog(int id, int uid);

    /**
     * 博客修改方法
     *
     * @param blog 要修改的博客
     * @return 返回操作的成功与否
     */
    boolean updateBlog(UserBlog blog);

    /**
     * 博客删除方法
     *
     * @param id 文章id
     */
    void deleteBlog(int id);


    /**
     * 博客的一个修改状态方法
     *
     * @param blogIds 博客id
     * @param status  要修改的状态
     * @return 返回操作的成功与否
     */
    Boolean changeBlogs(String[] blogIds, String status);

    /**
     * 获取博客集合的方法
     *
     * @param blogIds 博客id集合
     * @return 返回查询到的疯转类
     */
    List<UserBlog> findBlog(List<Integer> blogIds);

    /**
     * 通过用户id操作对应博客的状态的方法
     *
     * @param userIds 用户id集合
     * @param status  要修改的状态
     */
    void changeBlog(String[] userIds, String status);


    /**
     * 用户搜索文章的关键字获取文章用
     *
     * @param currentPage 当前页码
     * @param rows        每页显示的条数
     * @param findWords   搜索关键字
     * @return 返回分页的封装类
     */
    PageBean<UserBlog> findBlogPageBean(String currentPage, String rows, String findWords);


    /**
     * 获取博客id对应的图片路径集合
     *
     * @param id
     * @return
     */
    List<BlogImg> findBlogImages(String id);
}
